// SMSApp.h: interface for the CSMSApp class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_SMSAPP_H__903305B1_F5E9_4742_B7E7_4CAF176CA526__INCLUDED_)
#define AFX_SMSAPP_H__903305B1_F5E9_4742_B7E7_4CAF176CA526__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000


class CSMSItem;
class CSMSDispatch;
class CAccountManager;
class CIF;
class CSocketEngine;
class CSMSApp  
{
private:
	CSMSApp();
public:
	virtual ~CSMSApp();
public:
	CSocketEngine m_Engine;
	CSMSDispatch m_Dispatch;
	CAccountManager m_AccountManager;
	CIFManager      m_IFManager;
	std::list<CSMSItem*> m_SMSList;
public:
	void SubmitSMSTest();

	BOOL SubmitSMS(CSMSItem& sms)
	{
		CSMSItem* pSMS = new CSMSItem();
		*pSMS = sms;
        m_SMSList.push_back(pSMS);
		return TRUE;
	}
    void PeriodDispatch();
public:
    static CSMSApp* GetInstance()
	{
		if(NULL == m_Instance)
		{
			m_Instance = new CSMSApp();
		}
		return m_Instance;
	}
private:
	static CSMSApp* m_Instance;
public:
    LOG4CPLUS_CLASS_DECLARE( _s_logger );

};

#endif // !defined(AFX_SMSAPP_H__903305B1_F5E9_4742_B7E7_4CAF176CA526__INCLUDED_)
